import {AxiosPromise} from "axios";
import request from "@/utils/request";
import {Result} from "@/model";
import {GroupDTO, GroupInfoVO, GroupVO, SearchGroupVo} from "@/api/group/types";

/**
 * 获取我加入的群聊列表
 */
export function getJoinGList(): AxiosPromise<Result<GroupVO[]>> {
    return request({
        url: "/group/listJoin",
        method: "get",
    })
}

/**
 * 获取我的群聊列表
 */
export function getMyGList(): AxiosPromise<Result<GroupVO[]>> {
    return request({
        url: "/group/listMy",
        method: "get",
    })
}

/**
 * 获取最近的群聊
 * @param data 群聊查询条件
 */
export function getRecentGList(data: GroupDTO): AxiosPromise<Result<GroupVO[]>> {
    return request({
        url: "/group/recentGroup",
        method: "post",
        data,
    })
}

/**
 * 获取群组详细信息
 * @param groupId 群组id
 */
export function getGroupInfo(groupId: number): AxiosPromise<Result<GroupInfoVO>> {
    return request({
        url: `/group/info/${groupId}`,
        method: "post",
    })
}

/**
 * 搜索群聊
 * @param data 群号或者群名称
 */
export function searchGroup(data: GroupDTO): AxiosPromise<Result<SearchGroupVo[]>> {
    return request({
        url: `/group/searchGroup`,
        method: "post",
        data,
    })
}

/**
 * 创建群聊
 * @param data 群组
 */
export function createGroup(data: GroupDTO): AxiosPromise<Result<null>> {
    return request({
        url: `/group/createGroup`,
        method: "post",
        data,
    })
}

/**
 * 退出群聊
 * @param data 群组
 */
export function quitGroup(data: GroupDTO): AxiosPromise<Result<null>> {
    return request({
        url: `/group/quitGroup`,
        method: "post",
        data,
    })
}

/**
 * 修改群组
 * @param data 群组
 */
export function updateGroup(data: GroupDTO): AxiosPromise<Result<null>> {
    return request({
        url: `/group/update`,
        method: "put",
        data,
    })
}

/**
 * 删除群组
 * @param data 群组
 */
export function deleteGroup(data: GroupDTO): AxiosPromise<Result<null>> {
    return request({
        url: `/group/delete`,
        method: "delete",
        data,
    })
}